package com.mmy.dao.line;

import java.util.List;

import javax.transaction.Transactional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import com.mmy.domain.line.TLinePlace;

public interface TLinePlaceRepository extends JpaRepository<TLinePlace, Integer> {

	/**
	 * 函数功能说明： 获取集合地点ID最大值
	 *
	 * @param 参数说明 tLineBase
	 * @return 返回值说明 Object
	 * @author 创建人 shangzl 修改人 shangzl
	 * @date 创建日期 2020-07-24 修改日期 2020.11.18
	 */
	@Query(value = "select MAX(iPlaceID) from tLinePlace", nativeQuery = true)
	Object getMaxPlaceID();

	/**
	 * 函数功能说明： 根据名称查找集合地点
	 *
	 * @param 参数说明 tLineBase
	 * @return 返回值说明 集合地点集合
	 * @author 创建人 shangzl 修改人 shangzl
	 * @date 创建日期 2020-07-24 修改日期 2020.11.18
	 */
	@Query(value = "select *  from tLinePlace where cPlaceName like %:strPlaceName%", nativeQuery = true)
	List<TLinePlace> findByPlaceName(@Param("strPlaceName") String strPlaceName);


	/**
	 * 函数功能说明： 根据旅行社编码和集合地点名称查询 集合地点id
	 *
	 * @param 参数说明 tLineBase
	 * @return 返回值说明 集合地点id
	 * @author 创建人 liys
	 * @date 创建日期 2020-12-17
	 */
	@Query(value = "select iPlaceID from tLinePlace where cPlaceName like %:strPlaceName% and iOrgID = :iOrgID ", nativeQuery = true)
	Integer findByPlaceNameOrgID(@Param("strPlaceName") String strPlaceName, @Param("iOrgID") int iOrgID);

	/**
	 * 函数功能说明： 删除集合地点
	 *
	 * @param 参数说明 tLineBase
	 * @return 返回值说明 无返回值
	 * @author 创建人 shangzl 修改人 shangzl
	 * @date 创建日期 2020-07-24 修改日期 2020.11.18
	 */
	@Transactional
	@Modifying
	@Query(value = "delete from tLinePlace where tLinePlace.iPlaceID in (:lstPlaceID)", nativeQuery = true)
	void delPlace(@Param("lstPlaceID") List<Integer> lstPlaceID);

	/**
	 * 函数功能说明： 通过集合地点ID查找集合地点
	 *
	 * @param 参数说明 tLineBase
	 * @return 返回值说明 集合地点对象
	 * @author 创建人 shangzl 修改人 shangzl
	 * @date 创建日期 2020-07-24 修改日期 2020.11.18
	 */
	@Query(value = "select *  from tLinePlace where iPlaceID = :iPlaceID", nativeQuery = true)
	TLinePlace findByPlaceID(@Param("iPlaceID") int iPlaceID);

	/**
	 * 函数功能说明： 新增集合地点ID
	 *
	 * @param 参数说明 tLineBase
	 * @return 返回值说明 无返回值
	 * @author 创建人 shangzl 修改人 shangzl
	 * @date 创建日期 2020-07-24 修改日期 2020.11.18
	 */

	@Transactional
	@Modifying
	@Query(value = "INSERT INTO tLinePlace(iPlaceID, cPlaceName,iOrgID, dCreateDate, cCreator, dModifyDate, cReviser, cMemo, cSpare1, cSpare2, cSpare3, cSpare4, cSpare5) VALUES (:placeID, NULL, 100000000, NULL, NULL, NULL, NULL, '', NULL, NULL, NULL, NULL, NULL)", nativeQuery = true)
	void save(@Param("placeID") int placeID);

	/**
	 * 函数功能说明： 通过旅行社ID查找集合地点
	 *
	 * @param 参数说明 tLineBase
	 * @return 返回值说明 集合地点对象
	 * @author 创建人 shangzl 修改人 shangzl
	 * @date 创建日期 2020-07-24 修改日期 2020.11.18
	 */
	@Query(value = "select *  from tLinePlace where iOrgID = :iOrgID", nativeQuery = true)
	List<TLinePlace> findByOrgID(@Param("iOrgID") int iOrgID);


}
